package com.light.wanting.emoji;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonView;
import com.light.applet.common.entity.BaseEntityView;
import lombok.Data;
import org.springframework.data.annotation.Id;

import java.io.Serializable;
import java.util.Date;
import java.util.List;

/**
 * @author: 魏彪
 */
@Data
@TableName("tb_content")
public class Content implements Serializable {

    /**
     * 首页视图
     */
    public interface ContentHomeView extends BaseEntityView {
    }

    public interface ContentDetailsView extends BaseEntityView {
    }

    /**
     * serialVersionUID
     */
    private static final long serialVersionUID = -1L;

    /**
     * 主键
     */
    @Id
    @TableId(value = "id", type = IdType.AUTO)
    @JsonView({ContentHomeView.class, ContentDetailsView.class})
    private Long id;

    /**
     * 分类ID
     */
    private Long categoryId;

    /**
     * 内容
     */
    @JsonView({ContentHomeView.class, ContentDetailsView.class})
    private String content;

    /**
     * 点赞数
     */
    @JsonView({ContentHomeView.class, ContentDetailsView.class})
    private Long likedNum;

    /**
     * 收藏数
     */
    @JsonView({ContentDetailsView.class})
    private Long collectedNum;

    /**
     * 分享数
     */
    @JsonView({ContentDetailsView.class})
    private Long sharedNum;

    /**
     * 浏览量
     */
    @JsonView({ContentDetailsView.class})
    private Long viewedNum;

    /**
     * 内容状态
     */
    private Integer status;

    /**
     * 创建时间
     */
    @JsonView({ContentHomeView.class, ContentDetailsView.class})
    @TableField(fill = FieldFill.INSERT)
    private Date createTime;

    /**
     * 修改时间
     */
    @TableField(fill = FieldFill.UPDATE)
    private Date updateTime;

    /**
     * 封面图片
     */
    private Long coverFileId;

    /**
     * 封面图
     */
    @JsonView(ContentHomeView.class)
    @TableField(exist = false)
    private File coveredImg;

    /**
     * 图集
     */
    @JsonView({ContentDetailsView.class})
    @TableField(exist = false)
    private List<File> images;

}
